/******************************************************************************
 * Copyright (C) 2014-2020 Hugewing Co.,Ltd
 * All Rights Reserved.
 * 本软件为杭州巨翼科技开发研制。未经本公司正式书面同意，其他任何个人、团体
 * 不得使用、复制、修改或发布本软件.
 *****************************************************************************/
package com.sdkj.interceptor;

import java.util.Date;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;

//import com.hy.entity.right.RightAuth;
//import com.hy.entity.right.RightUser;
//import com.hy.initconfig.session.SessionInfo;
//import com.hy.service.right.IRightAuthService;
//import com.hy.service.right.IRightUserService;
//import com.hy.util.CommonUtils;
//import com.hy.util.HqlFilter;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
import com.sdkj.constant.WebConst;
import com.sdkj.utils.DateUtil;

/**
 * 权限拦截器
 * 
 */
public class AuthInterceptor extends MethodFilterInterceptor implements WebConst{
	
	public static Logger logger = Logger.getLogger(AuthInterceptor.class);

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

//	private static ApplicationContext ctx = null;

	@Override
	protected String doIntercept(ActionInvocation actionInvocation) throws Exception {
		
		//获取用户信息
//		AdminUser user=new AdminUser();
//		// 判断用户等级，看是否需要拦截
//		int level=user.getLevel();
//		if(level==1){//不需要验证权限
//			return actionInvocation.invoke();
//		}
//		
//		// 进行权限判断
		HttpServletRequest req=ServletActionContext.getRequest(); 
//		// 有权限
		
		logger.error(DateUtil.dt14FromDate(new Date())+" url : "+req.getRequestURI() +" params : "+req.getParameterMap());
		
		return actionInvocation.invoke();
		//没有权限
		//记录日志 ip,msg , account , params 
		
//		req.setAttribute(RES_MSG, msgMap.get(NO_AUTH));
//		return NO_AUTH;
		// 
		
//		SessionInfo sessionInfo = CommonUtils.getSessionInfo();
//		if (sessionInfo.getUserId().equals("0")) {// admin用户不需要验证权限
//			return actionInvocation.invoke();
//		} else {
//			HttpServletRequest request = ServletActionContext.getRequest();
//
//			String requestPath = CommonUtils.getRequestPath(request);
//
//			// 每个请求过来与数据库中的权限进行比对
//			ctx = WebApplicationContextUtils.getWebApplicationContext(ServletActionContext.getServletContext());
//			IRightAuthService rightAuthService = (IRightAuthService) ctx.getBean("rightAuthService");
//			HqlFilter filter = new HqlFilter();
//			filter.addFilter("QUERY_t#url_S_EQ", requestPath);
//			List<RightAuth> auths = rightAuthService.find(filter);
//			if (auths.size() == 0) {// 如果该请求没有设置权限不予处理
//				return actionInvocation.invoke();
//			} else {
//				IRightUserService rightUserService = (IRightUserService) ctx.getBean("rightUserService");
//				RightUser user = rightUserService.getById(sessionInfo.getUserId());
//				Iterator<RightAuth> iter = user.genAuths().iterator();
//				while (iter.hasNext()) {
//					RightAuth auth = iter.next();
//					if (auth.getUrl().equals(requestPath))
//						return actionInvocation.invoke();
//				}
//				ServletActionContext.getRequest().setAttribute("msg", "您没有访问此功能的权限！请联系管理员给你赋予相应权限。");
//				return "noAuth";
//
//			}
//		}
	}

}
